package com.dp.client.views.vuelo;

import java.util.List;

import org.moxieapps.gwt.highcharts.client.Point;

import com.dp.client.dto.VueloDTO;
import com.dp.client.servicios.vuelo.IServiciosVuelo;
import com.dp.client.servicios.vuelo.IServiciosVueloAsync;
import com.dp.client.util.Alerts;
import com.dp.client.views.reportesCharts.CrearBackPieChart;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.PopupPanel;
import com.google.gwt.user.client.ui.VerticalPanel;

public class ConfirmacionDespegeDialog extends PopupPanel{
	VerticalPanel vertical;
	CrearBackPieChart pie;
	Button aceptar, cancelar;
	IServiciosVueloAsync servicio = GWT.create(IServiciosVuelo.class);
	public ConfirmacionDespegeDialog( final VueloDTO vuelo , final TablaVuelos padre ) {
		super(true);
		//this.setTitle("Despegar vuelo " + vuelo.id );
		vertical = new VerticalPanel();
		vertical.setSize("600px", "400px");
		loadData( vuelo );
		aceptar = new Button();
		cancelar = new Button();
		aceptar.setText("Registar Despege");
		cancelar.setText("Cancelar");
		cancelar.addClickHandler( new ClickHandler( ) {
			@Override
			public void onClick(ClickEvent event) {
				hide();
			}
		});
		aceptar.addClickHandler( new ClickHandler() {
			@Override
			public void onClick(ClickEvent event) {
				if( Alerts.confirmacionGenerica("Desea registrar el despege del avion?") ){
					padre.llamadaServerAvanzar( vuelo );
					hide();
				}
			}
		});
		add(vertical);
	}
	void loadData( final VueloDTO vuelo ){
		servicio.getPaquetesAsignados( vuelo.id , new AsyncCallback<List<Integer>>() {
			@Override
			public void onSuccess(List<Integer> result) {
				Point [] points = new Point [ 2 ];
				int inAvio = result.get(0 );
				int total = result.get(1);
				int inAlma = total - inAvio;
				Label lbl = new Label("Este avion no tiene paquetes asignados");
				if( total == 0 ) vertical.add( lbl );
				else {
					points[ 0 ] = new Point("En Avion", inAvio );
					points[ 1 ] = new Point("En Almacen" , inAlma );
					pie = new CrearBackPieChart(points, "Paquetes en Avion", "entero");
					vertical.add( pie.getChart() );
				}
				HorizontalPanel panel = new HorizontalPanel();
				panel.setSize("100%", "20px");
				panel.add( aceptar );
				panel.add(cancelar );
				panel.setSpacing( 5 );
				vertical.add( panel );
			}
			
			@Override
			public void onFailure(Throwable caught) {
				Alerts.dialogErrorConexion();
				hide();
			}
		});
	}
	
}
